package com.structure.compositePattern.service.engine;

import com.structure.compositePattern.model.aggregates.TreeRich;
import com.structure.compositePattern.model.vo.EngineResult;

import java.util.Map;

/**
 * 决策引擎定义
 *
 * @author xiaobing
 * @version 1.0
 * @date 2021/9/8 8:11 下午
 */
public interface IEngine {

    /**
     * 执行引擎
     *
     * @param treeId         哪一个规则（可以理解哪一个活动）
     * @param userId         用户id
     * @param treeRich       这个活动所有的规则
     * @param decisionMatter 传参（例如，本活动是根据性别、年龄分不同的奖励，那么你需要传性别、年龄两个字段）
     * @return
     */
    EngineResult process(final Long treeId, final String userId, TreeRich treeRich, final Map<String, String> decisionMatter);
}
